maven 插件发布 docker 镜像
本文档介绍如何使用 Maven 插件构建 Docker 镜像并推送到阿里云容器镜像服务(ACR),适用于 PIGX 微服务架构的容器化部署。
💡推荐方案
阿里云 ACR 提供稳定的镜像托管服务,无需自建 Harbor,推荐中小团队使用。
构建流程
流程说明
| 步骤 | 说明 |
|---|
| Maven Build | 编译 Java 代码,打包为 JAR 文件 |
| fabric8 插件 | 调用 Docker Remote API 构建镜像 |
| Docker Daemon | 根据 Dockerfile 构建镜像 |
| docker push | 推送镜像到阿里云 ACR |
| docker pull | 生产服务器拉取镜像部署 |
一、ACR 版本对比
| 对比项 | 个人版 | 企业版 |
|---|
| 价格 | 免费 | 按量付费 |
| 镜像仓库数 | 100 个 | 无限制 |
| 镜像加速 | 不保障 | 保障 SLA |
| 多地域同步 | 不支持 | 支持 |
| 适用场景 | 个人开发、测试 | 生产环境 |
💡版本选择
个人版满足中小团队需求,企业版适合对稳定性和性能有更高要求的生产环境。
二、创建 ACR 个人版实例
2.1 开通容器镜像服务
- 登录 阿里云控制台
- 搜索「容器镜像服务」或访问 ACR 控制台
- 点击「免费试用」开通个人版实例
2.2 设置 Registry 登录密码
⚠密码保管
此密码用于 docker login 登录镜像仓库,请妥善保管,不要泄露到版本控制系统中。
- 进入 ACR 控制台
- 点击「访问凭证」
- 设置密码并确认
2.3 创建命名空间
- 在左侧导航栏选择「实例列表」→ 点击个人版实例
- 选择「仓库管理」→「命名空间」
- 点击「创建命名空间」,输入名称(如:
pigx)
- 设置「默认仓库类型」为「私有」
三、本地环境配置
3.1 安装 Docker
# 使用一键安装脚本
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
✓安装验证
执行 docker --version 确认 Docker 已成功安装。
3.2 开启 Docker Remote API(可选)
如果 Maven 构建机器与 Docker 不在同一台机器,需要开启 Remote API 以支持远程构建。
⚠安全提示
生产环境请使用 TLS 加密的 Remote API,避免暴露未加密的 2375 端口到公网。
# 编辑 Docker 服务配置
vim /usr/lib/systemd/system/docker.service
# 修改 ExecStart 行,添加 TCP 监听
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
# 重载配置并重启服务
systemctl daemon-reload
systemctl restart docker
四、配置 Maven 构建参数
4.1 修改 pom.xml
编辑项目根目录 pom.xml,修改 Docker 相关配置:
<properties>
<!-- 阿里云 ACR 地址(根据地域修改) -->
<docker.registry>registry.cn-hangzhou.aliyuncs.com</docker.registry>
<!-- Docker 主机 Remote API 地址(本机构建使用 127.0.0.1) -->
<docker.host>http://127.0.0.1:2375</docker.host>
<!-- ACR 命名空间 -->
<docker.namespace>pigx</docker.namespace>
<!-- ACR 访问凭证 - 用户名 -->
<docker.username>your-username</docker.username>
<!-- ACR 访问凭证 - 密码 -->
<docker.password>your-password</docker.password>
</properties>
💡配置说明
docker.host 配置为本机时使用 127.0.0.1:2375,远程构建时替换为远程 Docker 主机 IP。
4.2 阿里云 ACR 地域列表
| 地域 | Registry 地址 |
|---|
| 华东1(杭州) | registry.cn-hangzhou.aliyuncs.com |
| 华东2(上海) | registry.cn-shanghai.aliyuncs.com |
| 华北1(青岛) | registry.cn-qingdao.aliyuncs.com |
| 华北2(北京) | registry.cn-beijing.aliyuncs.com |
| 华南1(深圳) | registry.cn-shenzhen.aliyuncs.com |
| 中国香港 | registry.cn-hongkong.aliyuncs.com |
💡地域选择
建议选择距离生产服务器最近的地域,以提升镜像拉取速度。
五、构建并推送镜像
5.1 构建单个模块
# 进入模块目录
cd pigx-upms/pigx-upms-biz/
# 构建 Docker 镜像
mvn docker:build
# 推送镜像到 ACR
mvn docker:push
5.2 使用 IDEA Maven 面板执行
在 IDEA 右侧 Maven 面板中,展开对应模块的 Plugins → docker,双击 docker:build 或 docker:push 执行。
5.3 跳过指定模块构建
在实际部署中,可能不需要构建所有模块的镜像。可以通过修改模块 pom.xml 跳过构建。
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<skip>true</skip> <!-- 跳过此模块的 Docker 构建 -->
</configuration>
</plugin>
PIGX 各模块 Docker 构建配置
| 模块 | 路径 | 默认构建 |
|---|
| pigx-register | pigx-register | ✅ |
| pigx-gateway | pigx-gateway | ✅ |
| pigx-auth | pigx-auth | ✅ |
| pigx-upms-biz | pigx-upms/pigx-upms-biz | ✅ |
| pigx-codegen | pigx-visual/pigx-codegen | ✅ |
| pigx-monitor | pigx-visual/pigx-monitor | ✅ |
| pigx-quartz | pigx-visual/pigx-daemon-quartz | ✅ |
| pigx-xxl-job | pigx-visual/pigx-xxl-job-admin | ✅ |
| pigx-flow-biz | pigx-flow/pigx-flow-biz | ✅ |
| pigx-knowledge | pigx-knowledge | ✅ |
💡构建建议
生产环境只构建必需的核心模块(gateway、auth、upms),可视化模块和任务调度模块按需构建。
六、拉取镜像部署
6.1 在目标服务器登录 ACR
# 使用阿里云账号登录 ACR
docker login --username=<阿里云账号> registry.cn-hangzhou.aliyuncs.com
执行后输入在步骤 2.2 中设置的 Registry 密码。
6.2 拉取镜像
# 拉取指定版本镜像
docker pull registry.cn-hangzhou.aliyuncs.com/pigx/pigx-gateway:5.11.0
# 拉取最新版本
docker pull registry.cn-hangzhou.aliyuncs.com/pigx/pigx-gateway:latest
6.3 修改 docker-compose.yml 镜像地址
services:
pigx-gateway:
image: registry.cn-hangzhou.aliyuncs.com/pigx/pigx-gateway:5.11.0
container_name: pigx-gateway
restart: always
ports:
- "9999:9999"
networks:
- pigx-network
✓部署完成
配置完成后,执行 docker-compose up -d 启动服务,通过 docker ps 查看容器运行状态。